<?php
/* * ******************************************************************************************************************************* */

// CREAR POST PAGINAS PERSONALIZADAS
/* * ******************************************************************************************************************************* */
function post_custom_pages() {
    $labels = array(
        'name' => _x('Páginas', 'post type general name', 'your_text_domain'),
        'singular_name' => _x('Páginas', 'post type singular name', 'your_text_domain'),
        'add_new' => _x('Añadir Página', 'book', 'your_text_domain'),
        'add_new_item' => __('Añadir Página', 'your_text_domain'),
        'edit_item' => __('Editar', 'your_text_domain'),
        'new_item' => __('Nuevo', 'your_text_domain'),
        'all_items' => __('Ver Todas', 'your_text_domain'),
        'view_item' => __('Ver Página', 'your_text_domain'),
        'search_items' => __('Buscar Páginas', 'your_text_domain'),
        'not_found' => __('La página no está funcionando', 'your_text_domain'),
        'not_found_in_trash' => __('La página no funciona en esta sección', 'your_text_domain'),
        'parent_item_colon' => '',
        'menu_name' => __('Config. Páginas', 'your_text_domain')
    );


    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'rewrite' => array('slug' => _x('pagina', 'URL slug', 'your_text_domain')),
        'capability_type' => 'post',
        'has_archive' => true,
        'hierarchical' => false,
        'menu_position' => 2,
        'menu_icon' => get_template_directory_uri() . '/images/config-page.png',
        'supports' => array('title', 'editor', 'thumbnail')
    );

    register_post_type('custom_page', $args);
}

add_action('init', 'post_custom_pages');
add_action('init', 'create_taxonomy_type_pages');

// CREAR CATEGORIAS
function create_taxonomy_type_pages() {
// Add new taxonomy, make it hierarchical (like categories)
    $labels = array(
        'name' => _x('Tipos de Páginas', 'taxonomy general name'),
        'singular_name' => _x('Tipos de Página', 'taxonomy singular name'),
        'search_items' => __('Buscar Tipo de Página'),
        'all_items' => __('Tipos de Páginas'),
        'parent_item' => __('Tipo de Página Padre'),
        'parent_item_colon' => __('Tipo de Página Padre:'),
        'edit_item' => __('Editar'),
        'update_item' => __('Actualizar'),
        'add_new_item' => __('Añadir'),
        'new_item_name' => __('Nuevo Nombre'),
        'menu_name' => __('Tipo de Página'),
    );


    register_taxonomy('tipo_pagina', array('custom_page'), array(
        'public' => true,
        'hierarchical' => true,
        'labels' => $labels,
        'query_var' => true,
        //            'rewrite' => true,
        'show_ui' => true,
        '_builtin' => true,
        'show_in_nav_menus' => true,
    ));
}

function add_custom_meta_box() {
    add_meta_box(
            'custom_meta_box', // id
            'Asociar Cajas a esta Página', // título
            'show_custom_meta_box', // función a la que llamamos
            'custom_page', // sólo para entradas
            'normal', // contexto
            'high'); // prioridad

    add_meta_box(
            'slider_boton', // id
            'Configurar botón Slider', // título
            'show_boton_slider', // función a la que llamamos
            'custom_page', // sólo para entradas
            'normal', // contexto
            'high'); // prioridad
}

add_action('add_meta_boxes', 'add_custom_meta_box');

// Llamar JS
function add_admin_scripts($hook) {

    if ($hook == 'post-new.php' || $hook == 'post.php') {
        wp_enqueue_script('custom-js', get_template_directory_uri() . '/js/custom-js.js');
        wp_enqueue_script('mod_editar_post', get_template_directory_uri() . '/js/mod_editar_post.js');
        wp_enqueue_script('animaciones_cajas', get_template_directory_uri() . '/js/animaciones_cajas.js');

        wp_localize_script('animaciones_cajas', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));
    }
}

add_action('admin_enqueue_scripts', 'add_admin_scripts', 10, 1);


$cajas_pagina = array(// Dentro de este array podemos incluir más tipos
    array(
        'label' => 'cajas',
        'tamanios-cajas' => 'select-tamanios-cajas',
        'tipos-cajas' => 'select-tipos-cajas',
        'cajas' => 'select-cajas'
    )
);


/* * ******************************************************************************************************************************* */

//Mostrar selector de cajas
/* * ******************************************************************************************************************************* */

function show_custom_meta_box() {
    global $cajas_pagina, $post;
// Usamos nonce para verificación
    echo '<input type="hidden" name="custom_meta_box_nonce" value="' . wp_create_nonce(basename(__FILE__)) . '" />';

// Creamos el div de campos personalizados y empezamos un loop con todos ellos
    foreach ($cajas_pagina as $field) { // Hacemos un loop con todos los campos personalizados
// obtenemos el valor del campo personalizado si existe para este $post->ID
        $tamanios = get_post_meta($post->ID, $field['tamanios-cajas'], true);
        $tipos = get_post_meta($post->ID, $field['tipos-cajas'], true);
        $cajas = get_post_meta($post->ID, $field['cajas'], true);
        ?>

        <style type="text/css">
            .boton-editar.button-primary {
                float: right;
                padding: 0;
            }
            .boton-editar .post-edit-link {
                color: white;
                text-decoration: none;
                display: block;
                padding: 0 10px;
            }

            #custom_meta_box .inside {
                overflow-x: scroll;
            }


            .cajas-repeatable{
                display: inline-block;
            }

            .cajas-repeatable > li {
                border: 1px solid #D1D1D1;
                border-radius: 10px 10px 10px 10px;
                box-shadow: 0 0 2px 0 grey;
                display: block;
                float: left;
                height: 335px;
                margin: 6px;
                padding: 25px;
                position: relative;
                width: 236px;
            }

            .repeatable-remove.button {
                bottom: 25px;
                display: inline-block;
                position: absolute;
                right: 25px;
            }

            .edit-link {
                float: right;

            }

            .edit-link a{
                text-decoration: none;
                color: white;
            }
        </style>

        <div clase="<?php echo $field['label']; ?>" style="width: 900px; box-shadow: 0 0 2px 0 grey; padding: 30px 30px 30px 34px; display: block; margin: 30px">

            <ul class="<?php echo $field['label']; ?>-repeatable custom_repeatable">
                <?php
                if ($cajas) { // Si get_post_meta nos ha dado valores, hacemos un foreach
                    for ($i = 0; $i < count($cajas); $i++) {
                        ?>
                        <li>
                            <!-- Añadimos la imagen que se arrastra para cambiar posición, dentro de tu tema -->
                            <span class="sort hndle" style="float:left;"><img src="<?php echo get_template_directory_uri() . '/images/move.png'; ?>" />&nbsp;&nbsp;&nbsp;</span>
                            <?php
                            edit_post_link(__('Editar'), '<span class="boton-editar button-primary">', '</span>', $cajas[$i]);
                            ?>
                            <br/><br/>
                            <!-- El input con el valor del meta. Su attributo "name" tiene un número que se irá incrementando a
                                 medida que creamos nuevos campos -->

                            <?php seleccionar_cajas($tamanios[$i], $tipos[$i], $cajas[$i], $i) ?>

                            <!-- Los botones de eliminar imagen y de quitar fila-->
                            <br/><br/>
                            <a class="repeatable-remove button" href="#">- Quitar Caja</a>
                        </li>

                        <?php
                    } // Fin del foreach
                } else { // Si no hay datos
                    ?>
                    <li>
                        <!-- Añadimos la imagen que se arrastra para cambiar posición, dentro de tu tema -->
                        <span class="sort hndle" style="float:left;"><img src="<?php echo get_template_directory_uri() . '/images/move.png'; ?>" />&nbsp;&nbsp;&nbsp;</span>
                        <?php
                        edit_post_link(__('Editar'), '<span class="edit-link button-primary">', '</span>', $cajas[$i]);
                        ?>
                        <br/><br/>
                        <!-- El input con el valor del meta. Su attributo "name" tiene un número que se irá incrementando a
                             medida que creamos nuevos campos -->

                        <?php seleccionar_cajas($tamanio, $tipo, $caja, $i); ?>

                        <!-- Los botones de eliminar imagen y de quitar fila-->
                        &nbsp;&nbsp;&nbsp;<a class="repeatable-remove button" href="#">- Quitar Caja</a>
                    </li>

                <?php } ?>
            </ul>
            <br />
            <!-- Botón para añadir una nueva fila -->
            <a class="repeatable-add button-primary" href="#">+ Añadir Caja</a>
            <!-- Aquí va la descripción -->
            <br clear="all" /><br /><p class="description"><?php echo $field['desc']; ?></p>
            <?php
            echo '</div>';
        } // fin del foreach
        ?>
        <?php
    }

// Fin de la función


    /*     * ******************************************************************************************************************************* */

//MOSTRAR el selecton de tipo boton slider
    /*     * ******************************************************************************************************************************* */
    function show_boton_slider() {
        global $post, $wpdb;
        $custom = get_post_custom($post->ID);
        $mostrar_boton = $custom["mostrar-boton"][0];
        $tipo_boton = $custom["tipo-boton"][0];
        $id_prod_comprar = $custom["id_prod_comprar"][0];


        $productos = $wpdb->get_results(
                "SELECT  dimension.id_prod_sf, producto.nombre AS nombre_prod, dimension.nombre AS nombre_dim FROM dimensiones AS dimension LEFT JOIN productos AS producto
                 ON dimension.id_producto = producto.id_producto
                 WHERE dimension.id_prod_sf ORDER BY producto.nombre ASC"
        );
        ?>
        <style>

            .config-boton {
                border-radius: 5px 5px 5px 5px;
                box-shadow: 0 0 2px grey;
                line-height: 20px;
                padding: 10px;
                display: none;
            }

            #mostrar-boton {
                margin-bottom: 15px;
                margin-right: 10px;
            }

            #consultar, #disenios, #comprar {
                margin-right: 10px;
            }
        </style>

        <input type="checkbox" id="mostrar-boton" name="mostrar-boton" value="true" <?php if ($mostrar_boton == 'true') echo 'checked'; ?>/><label for="mostrar-boton">Mostrar botón en Slider</label>
        <div class="config-boton">
            <strong>Seleccionar tipo de botón:</strong><br>
            <input type="radio" id="disenios" name="tipo-boton" value="disenios" checked/><label for="disenios">Diseños Bepoket Print</label><br>
            <input type="radio" id="consultar" name="tipo-boton" value="consultar" <?php if ($tipo_boton == 'consultar') echo 'checked'; ?>/><label for="consultar">Consultar</label><br>
            <input type="radio" id="comprar" name="tipo-boton" value="comprar" <?php if ($tipo_boton == 'comprar') echo 'checked'; ?>/><label for="comprar">Comprar:</label>
            <!--<input type="text" size="60" name="link-comprar" placeholder="Link del botón" value="<?php //if ($link_comprar) echo $link_comprar;             ?>"><small>Ej: http://www.bepoketprint.com/producto</small><br>-->
            <label style="margin-left: 30px;">Producto</label>
            <select name="id_prod_comprar">
                <option>Seleccionar...</option>
                <?php foreach ($productos as $producto) { ?>
                    <option value="<?php echo $producto->id_prod_sf; ?>" <?php if ($id_prod_comprar == $producto->id_prod_sf) echo 'selected'; ?>><?php echo $producto->nombre_prod.' - '.$producto->nombre_dim; ?></option>
                <?php } ?>
            </select><br>
        </div>
        <?php
    }

// Fin de la función

    /*     * ******************************************************************************************************************************* */

//Guardar Campos Personalizados
    /*     * ******************************************************************************************************************************* */

// Grabar los datos
    function guardar_cajas_pagina($post_id) {
        global $cajas_pagina;

        // verificamos usando nonce
        if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__)))
            return $post_id;
        // comprobamos si se ha realizado una grabación automática, para no tenerla en cuenta
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
            return $post_id;
        // comprobamos que el usuario puede editar
        if ('page' == $_POST['post_type']) {
            if (!current_user_can('edit_page', $post_id))
                return $post_id;
        } elseif (!current_user_can('edit_post', $post_id)) {
            return $post_id;
        }

        // hacemos un loop por todos los campos y guardamos los datos
        foreach ($cajas_pagina as $field) {
            $tamanios_cajas_old = get_post_meta($post_id, $field['tamanios-cajas'], true);
            $tamanios_cajas_new = $_POST[$field['tamanios-cajas']];
            $tipos_cajas_old = get_post_meta($post_id, $field['tipos-cajas'], true);
            $tipos_cajas_new = $_POST[$field['tipos-cajas']];
            $cajas_old = get_post_meta($post_id, $field['cajas'], true);
            $cajas_new = $_POST[$field['cajas']];


            if ($tamanios_cajas_new && $tamanios_cajas_new != $tamanios_cajas_old) {
                update_post_meta($post_id, $field['tamanios-cajas'], $tamanios_cajas_new);
            } elseif ('' == $tamanios_cajas_new && $tamanios_cajas_old) {
                delete_post_meta($post_id, $field['tamanios-cajas'], $tamanios_cajas_old);
            }

            if ($tipos_cajas_new && $tipos_cajas_new != $tipos_cajas_old) {
                update_post_meta($post_id, $field['tipos-cajas'], $tipos_cajas_new);
            } elseif ('' == $tipos_cajas_new && $tipos_cajas_old) {
                delete_post_meta($post_id, $field['tipos-cajas'], $tipos_cajas_old);
            }

            if ($cajas_new && $cajas_new != $cajas_old) {
                update_post_meta($post_id, $field['cajas'], $cajas_new);
            } elseif ('' == $cajas_new && $cajas_old) {
                delete_post_meta($post_id, $field['cajas'], $cajas_old);
            }
        } // final del foreach
    }

    //GUARDAR BOTON SLIDER
    function guardar_boton_slider() {
        global $post;
        $custom = get_post_custom($post->ID);

        $datos = array(
            array('nombre' => "mostrar-boton", 'old' => $custom["mostrar-boton"][0], 'new' => $_POST["mostrar-boton"]),
            array('nombre' => "tipo-boton", 'old' => $custom["tipo-boton"][0], 'new' => $_POST["tipo-boton"]),
            array('nombre' => "id_prod_comprar", 'old' => $custom["id_prod_comprar"][0], 'new' => $_POST["id_prod_comprar"])
        );

        foreach ($datos as $dato) {

            if ($dato['new'] && $dato['new'] != $dato['old']) {
                update_post_meta($post->ID, $dato['nombre'], $dato['new']);
            } elseif ('' == $dato['new'] && $dato['old']) {
                delete_post_meta($post->ID, $dato['nombre'], $dato['old']);
            }
        }
    }
    ?>